-
Type: Task
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: None
-
Component/s: None
-
None
下記はTeeda側でキャンセル時にチェックドな例外を投げたり、
ClientAbortExceptionを握りつぶすなどの対処が必要かもしれない.
Seasar-user:10949
CSVファイルのダウンロードで「開く、保存、キャンセル」画面でキャンセルしたとこ
ろ
下のログにあるような「ClientAbortException」となる現象た発生しております。
CSVファイルのダウンロードは、Actionクラスで
public Class doHoge() {
// レスポンスにダウンロード用のヘッダー設定を行い
response.setContentLength((int) size);
response.setContentType("text/csv");
response.setHeader("Content-Disposition","inline;filename=\"" + fileName + "
\"");
//内容を書き出して
OutputStream out = response.getOutputStream();
int c;
while ((c = in.read()) != -1)
out.close();
in.close();
// 終了したことをJSFに通知する。
page.getFacesContext().responseComplete();
return null;
}
として実現しています。
ログを見る限りは、Actionクラス終了後の出来事のようなのです。
「ClientAbortException」を無視するような対応が必要だと思うのですが・・・
別の目的でIntercepterを作成しています。この中で、
件のエラーを無視するコードを下のように記述すれば対応できるのでしょうか?
try
catch (ClientAbortException e)
{ // 無視 }よろしくお願いします。
エラーのログです。
DEBUG 2007-09-13 01:07:21,609 [http-8080-Processor25] [ESSR0043]kh.web.MenuAct
ion$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClientAbortExcep
tion: java.net.SocketException: Connection reset by peer: socket write error
org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]kh.
web.MenuAction$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClien
tAbortException: java.net.SocketException: Connection reset by peer: socket w
rite error
at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:58)
at org.seasar.framework.beans.impl.BeanDescImpl.invoke(BeanDescImpl.java:213)
at org.seasar.teeda.extension.html.impl.HtmlComponentInvokerImpl.invoke(HtmlC
omponentInvokerImpl.java:159)
at org.seasar.teeda.extension.html.impl.HtmlActionListener.processAction(Html
ActionListener.java:62)
at javax.faces.component.UICommand.broadcast(UICommand.java:149)
at org.seasar.teeda.extension.component.html.THtmlCommandButton.broadcast(THt
mlCommandButton.java:53)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:192)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
at org.seasar.teeda.core.lifecycle.impl.InvokeApplicationPhase.executePhase(I
nvokeApplicationPhase.java:29)
at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:5
5)
at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:9
4)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:92)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(Hotdeplo
yFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2Contain
erFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62
)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
27)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
17)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
va:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151
)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proces
sConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.j
ava:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollower
WorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.j
ava:685)
at java.lang.Thread.run(Thread.java:595)